home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / util / sys / Alloc32P.readme < prev    next >
Text File  |  1997-11-02  |  4KB  |  111 lines

  1. Short:    Alloc32P - AllocMem/AllocVec patch V2.0
  2. Author:   Andreas_Kleinert@t-online.de
  3. Uploader: Andreas_Kleinert@t-online.de
  4. Type:     util/sys
  5.  
  6.  This patch does a few things:
  7.  
  8.  o Sometimes programs fail with a "not enough memory" error,
  9.    but after calling "avail flush" the same operation does
  10.    succeed without problems.
  11.  
  12.    Obviously AllocMem/AllocVec does not force such a "flush"
  13.    operation AND tries to allocate memory again, immediately
  14.    after the flushing has been done. Why ? Why has the program
  15.    to assume, that its allocation did fail, although there may
  16.    has been some memory released by the flush ?
  17.  
  18.    This patch does ensure, that AllocMem/AllocVec won't
  19.    fail unless there's really no memory available, even
  20.    by flushing. This means:
  21.  
  22.       - less "out of memory" failures
  23.       - less "bad behaviour" of bad programs, which don't
  24.         check results of AllocMem/AllocVec
  25.       - no more need to call "avail flush" by hand
  26.         from the shell
  27.       - thus no more "retry" operations after "avail flush"
  28.       - no more unused libraries/devices consuming memory
  29.         when it is already low
  30.  
  31.  o (new) AllocMem() and AllocVec() calls are changed into
  32.    new-style memory allocation calls
  33.  
  34.  o 32 Byte alignment for new-style memory allocated buffers
  35.  
  36.  o new-style memory allocation does work as follows: each
  37.    memory request will be extended by space for certain
  38.    administration data, which fulfils several tasks:
  39.  
  40.        - it does contain some information on the allocation,
  41.          such as buffer size and various pointers
  42.        - imitating an AllocVec allocation
  43.        - aligning the actually used buffer pointer to the
  44.          next 32 byte boundary (Exec aligns to 8 byte
  45.          boundaries, so we add another 24 bytes)
  46.  
  47.    Additionally, this alignment also takes place at the
  48.    end of the buffer, where upto 31 bytes may be added,
  49.    to align it to the next 32 byte boundary.
  50.  
  51.    So, each memory allocation will at least be 64 bytes
  52.    wide.
  53.  
  54.  o delocating a new style buffer works by taking the
  55.    information from the extended space (from within
  56.    the extra 24 bytes), which does work quite similar
  57.    to a common AlloVec call, where the buffer size is
  58.    stored before the buffer, too. But with Alloc32P,
  59.    this is possible with usual AllocMem() calls as well.
  60.    The "size" parameter of a FreeMem(ptr, size) call
  61.    will be ignored - or optionally just be used for safety
  62.    comparisons.
  63.  
  64.  o basically it does not matter, at which point you start
  65.    the patch, since it will recognize, when any program does
  66.    try to delocate buffers that had been allocated before the
  67.    patch had been running. It then will delocate these
  68.    the old way. But it does make sense, to TEST it fromout
  69.    the Shell first, and THEN add it to s:startup-sequence
  70.    or s:user-startup
  71.  
  72.  
  73.  Note:  Needs V37+ and 68020.
  74.  
  75.  Note:  DO NOT RUN MUNGWALL IN PARALLEL - IT WILL NOT
  76.         RECOGNIZE THE PATCH AND MAY PRODUCE ENDLESS
  77.         MUNGWALL HITS !
  78.         (Additionally, this does not make sense anyway,
  79.          since the patch may falsify the results out
  80.          of testing buggy programs - it may compensate
  81.          some of these bugs actually ;)
  82.  
  83.  Usage:  Try starting in the Shell/CLI.
  84.          If it does run stable, copy it into
  85.          your C: directory and add it
  86.          somewhere into your s:user-startup
  87.  
  88.                 AllocP >NIL: <NIL:
  89.  
  90.  You use this patch at YOUR OWN RISK.
  91.  No guarantee for anything.
  92.  Source code included.
  93.  
  94.  ---
  95.  All mentioned trademarks are subject to their owners.
  96.  
  97.  
  98. ============================= Archive contents =============================
  99.  
  100. Original  Packed Ratio    Date     Time    Name
  101. -------- ------- ----- --------- --------  -------------
  102.     3534    1638 53.6% 02-Oct-97 21:03:44 +Alloc32P.readme
  103.     3992    2369 40.6% 02-Oct-97 21:00:32 +AllocP
  104.    11174    2266 79.7% 02-Oct-97 21:00:18 +AllocP.c
  105.      835     390 53.2% 01-Aug-97 10:07:56 +AllocP.info
  106.     1776     987 44.4% 02-Oct-97 21:00:30 +AllocP.o
  107.      141     115 18.4% 16-Aug-97 09:12:24 +SCOPTIONS
  108.      163     101 38.0% 02-Oct-97 18:24:36 +smakefile
  109. -------- ------- ----- --------- --------
  110.    21615    7866 63.6% 11-Oct-97 00:04:04   7 files
  111.